#ifndef EITEMINPLUGINPARENT_H
#define EITEMINPLUGINPARENT_H

#include <DefineCommon.h>
#include <EMatrix4x4.h>
#include <EString.h>
#include <EItem.h>

class EItemInPluginParent;
typedef SmartPtr(EItemInPluginParent) EItemInPluginParentPtr;
/**
 * @brief 
 * A parent class for reflection and plugin testing  
 * @param param1
 * @param param2
 * @return
 */
class EItemInPluginParent : public EItem
{
public:
    EItemInPluginParent();
    virtual ~EItemInPluginParent();

    /*some function that may be called by ui*/
    void ui_testParent(double v1, double v2);

    //some properties that will show in ui
    int ui_testIntParent = 1;

    void OnSet_ui_testIntParent(int value);
    void OnGet_ui_testIntParent(int& value);

    double ui_testDoubleParent = 2;
	void OnSet_ui_testDoubleParent(double value);
	void OnGet_ui_testDoubleParent(double& value);

	bool ui_testBoolParent = false;
	void OnSet_ui_testBoolParent(bool value);
	void OnGet_ui_testBoolParent(bool& value);

	EVec3 ui_testVec3Parent = EVec3(1,2,3);
	void OnSet_ui_testVec3Parent(const EVec3& value);
	void OnGet_ui_testVec3Parent(EVec3& value);

	EVec4 ui_testVec4Parent = EVec4(2,2,2,2);
	void OnSet_ui_testVec4Parent(const EVec4& value);
	void OnGet_ui_testVec4Parent(EVec4& value);

	EMatrix4x4 ui_testMatrixParent;
	void OnSet_ui_testMatrixParent(const EMatrix4x4& value);
	void OnGet_ui_testMatrixParent(EMatrix4x4& value);

	EString ui_testStringParent = "Hello World!";
	void OnSet_ui_testStringParent(const EString& value);
	void OnGet_ui_testStringParent(EString& value);

protected:

};

#endif // EITEMINPLUGINPARENT_H
